#include "LogicUndo.h"

//string LogicUndo::undo(Parser::PARSED_COMMAND parsedCommand, 
//						vector<Task>& tasksVector,
//						Writer* _writer, Writer* states[]);
//
//	string statusMessage;
//	bool exceedMaxUndo;
//
//	exceedMaxUndo = updateUndoState();
//
//	if( exceedMaxUndo ) {
//		statusMessage = UNDO_ERROR_MESSAGE;
//	} else {
//		int undoState = getUndoState();
//		updateMainWriter(undoState);
//		statusMessage = UNDO_SUCCESS_MESSAGE;
//	}
//
//	return statusMessage;
//}
//
//void LogicUndo::updateState(Writer* _writer, Writer* states[]) {
//	// propagate the writers down the line
//	// e.g.
//	// state8 copied to state9
//	// state7 copied to state8
//	// state6 copied to state7
//	// etc...
//	for( int i=8; i>=0; i-- ) {
//		states[i] = states[i+1];
//	}
//
//	// state0 is a copy of _writer
//	// most recent state is state0
//	states[0] = _writer;
//}
//
//// undo sub-functions
//bool LogicUndo::updateUndoState() {
//	
//	bool exceedMaxUndo;
//
//	// increments _undoState
//	// keeps track of current undo state
//	_undoState++;
//	int limit = getUndoState();
//
//	if( limit > MAX_UNDO_STATES-1 ) {
//		limit = MAX_UNDO_STATES-1;
//		exceedMaxUndo = true;
//	} else {
//		exceedMaxUndo = false;
//	}
//
//	return exceedMaxUndo;
//}
//
//int LogicUndo::getUndoState() {
//	return _undoState;
//}
//
//void LogicUndo::setInitUndoState(int initUndoState) {
//	_undoState = initUndoState;
//}
//
//void LogicUndo::setupWriters(Writer* states[]) {
//
//	stringstream fileName;
//
//	for( int i=0; i<MAX_UNDO_STATES; i++ ) {
//		fileName.str("");
//		fileName << SUB_WRITER_FILE_NAME << i << FILE_NAME_EXTENSION;
//		states[i] = new Writer(fileName.str());
//	}
//}
//
//void LogicUndo::updateMainWriter(int undoState, Writer* _writer, Writer* states[]) {
//	// update _writer (main)
//	_writer = states[undoState];
//}
//
//const string LogicUndo::UNDO_SUCCESS_MESSAGE = "Undo Successful";
//
//const string LogicUndo::UNDO_ERROR_MESSAGE = "Unable to Undo Further";
//
//const int LogicUndo::INIT_UNDO_STATE = 0;
//const int LogicUndo::MAX_UNDO_STATES = 10;
//
//const string LogicUndo::SUB_WRITER_FILE_NAME = "subwriter";
//const string LogicUndo::FILE_NAME_EXTENSION = ".txt";